Kibana 5.5.0 の新機能の Region Map を試してみた
こんにちは、藤本です。
現地時間 7/6 に Elastic Stack 5.5.0 がリリースされました。
- Elastic Stack 5.5.0 released
- Elasticsearch 5.5.0 released
- Kibana 5.5.0 released
- Logstash 5.5.0 released
- Elasticsearch for Apache Hadoop 5.5.0
昨日、Kibana + X-Pack 5.5.0 から追加された Grok Debugger を試してみました。
https://dev.classmethod.jp/server-side/elasticsearch/x-pack-grok-debugger/
今回は Kibana 5.5.0 の新機能で一番気になっていた Region Map を試してみました。
Kibana による地理データの可視化
Kibana は緯度・経度情報(geo_point フィールド)から Tile Map Visualize によって、地図に集計データをプロットすることができました。例えば、Apache のアクセスログのアクセス元 IPアドレスから Geoip を利用して緯度・経度情報を取得し、どの緯度・経度からのアクセスが多いかを可視化することができました。ただ、集計するデータは緯度・経度の位置ポイントを利用しているため、国や、都市といった意味のある範囲で可視化することができませんでした。
それが今回の新機能「Region Map」で可能となりました。
Region Map
Region Map は簡単に言うと、国単位、都市単位などでデータを集計して可視化します。例えば、Apache のアクセスログから国単位や、都市単位で集計した結果を可視化できます。
Region Map は Coodinate Map(旧 Tile Map)と異なり、緯度・経度情報は利用しません。Terms Aggregion で集計した結果をマップサービスから地理データを取得し、データ数に応じて色を付けているようです。Elastic 社が提供する Elastic Maps Service でも利用可能です。Elastic Maps Service では国名、もしくはアメリカの州の名前に対応しています。
なお、Region Map の追加に合わせて、今までの Tile Map という名前の可視化は Coodinate Map に変更となりました。
5.4.0
5.5.0
試してみた
今回、利用したデータは ELB のアクセスログです。アクセスログのアクセス元 IPアドレスから GeoIP を使って、国名を割り出し、Region Map によって国単位のアクセス数を可視化します。
ログデータは Logstash を利用して取り込み、Geoip filter pluginを利用して IPアドレスから緯度・経度情報や、国名を取得し、Elasticsearch にインデキシングしました。
それでは地理データを表示していきましょう。
Kibana へアクセスし、「Visualize」を選択します。「Create a visualization」を選択し、新規 Visualize を作成します。
「Region Map」を選択します。
インデックスは「elblog-*」(ELB のアクセスログを取り込んだインデックス)を選択します。
地図が表示されました。ここからデータの集計方法、地理データの取得方法を設定し、可視化します。「shape field」をクリックします。
利用できる Aggregation は「Terms Aggregation」のみです。今回は国名を使って地理データを受け取るので、Field は「geoip.country_name.keyword」を選択します。件数はアクセス数上位 15件とします。「Options」を選択します。
Vector Map は「World Countries」を選択します。Join field は国名なので「Country name」を選択します。「▶」をクリックします。
プロットされました!いい!この機能は嬉しい。日本の Web サイトなので日本からのアクセスが圧倒的に多いです。その他にもアメリカから多くのアクセスがきています。ちなみに上に表示されているエラーメッセージは Logstash の Geoip から割り当てられた国名と、Elastic Map Service で対応する国名が異なっているものがあるようです。そこは合わせてほしいなぁ。。
続いて、Elastic Map Service はアメリカの州も対応しているので一緒にやってみましょう。アメリカの州を表示したい場合は、Vector map に「US States」を選択し、Join field に「State name」を選択します。「Data」に戻って、Aggregation の Field を州名なので「geoip.region_name.keyword」に変更します。「▶」をクリックします。
いい!
まとめ
いかがでしたでしょうか? 今まで詳細な位置情報を知りたい時は緯度・経度情報から可視化できることは嬉しかったですが、データ分析などで集計する場合は国単位・都市単位で可視化したかったケースもあったのではないでしょうか。何より選択肢が増えることは非常に嬉しいことですね!